#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : setting.py
# @Author  : Alisen
# @Date    : 2021-04-20
# @Desc    :
import optparse
import os

import os
import sys
import getopt


# sys.path.append(os.path.abspath(os.path.dirname(os.path.abspath(__file__))))

# # 根据脚本参数，来决定用那个环境配置
# # 参数优先级  arg > environ > default
# num = len(sys.argv) - 1  # 参数个数
# if num < 1 or num > 1:
#     APP_ENV = os.environ.get('SY_API_CRAWLER', None)
# else:
#     env = sys.argv[1]  # 环境
#     APP_ENV = sys.argv[1]
#
# if not APP_ENV:
#     print("未指定环境，使用默认环境：default")
#     APP_ENV = 'default'
# print("当前环境：", APP_ENV)
# config = mapping[APP_ENV.lower()]()  # 实例化对应的环境
from settings.production_hk import ProductionHKConfig
from settings.sit import SitConfig


def __get_config():
    from settings._default import Config
    from settings.dev import Dev
    from settings.production import ProductionConfig

    usage = "python %prog -e/--env <env config> "
    parser = optparse.OptionParser(usage)  ## 写入上面定义的帮助信息
    parser.add_option('-e', '--env', dest='env', type='string', help='env config', default=None)
    options, args = parser.parse_args()

    command_env = options.env
    sys_env = os.environ.get('SY_API_CRAWLER', None)

    if command_env:
        APP_ENV = command_env
        print(f'使用命令行变量配置：{command_env}')
    elif sys_env:
        APP_ENV = sys_env
        print(f'使用环境变量配置：{sys_env}')
    else:
        APP_ENV = 'default'
        print(f"未指定配置，使用默认配置: {APP_ENV}")

    # 环境映射关系
    mapping = {
        'dev': Dev,
        'prod': ProductionConfig,
        'prod_hk': ProductionHKConfig,
        'pro': ProductionConfig,
        'pro_hk': ProductionHKConfig,
        'sit': SitConfig,
        'default': Config
    }

    if APP_ENV.lower() not in mapping:
        raise Exception(f'没有对应的配置 {APP_ENV}')
    else:
        return mapping.get(APP_ENV.lower())
